//////////////////////////////////////////////////////////////////////////////////////////////
//	File			:	"Game.h"
//
//	Author			:	Mike Davis, Matt Stover, James Thornton, Keith Webster
//	
//	Project			:	TacWars
//
//	Last Modified	:	11/6/2013
//
//	Purpose			:	
//
//////////////////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "BitmapFont.h"
#include "GameObjects\Player.h"
#include <vector>
using namespace std;


class CSGD_Direct3D;
class CSGD_DirectInput;
class CSGD_TextureManager;
class CSGD_XAudio2;
class CSGD_MessageSystem;
class CSGD_EventSystem;
class IMessage;

class Entity;
class EntityManager;

class IGameState;


class Game
{
public:

	static Game* GetInstance();
	static void DeleteInstance();

	void Initialize(HWND hWnd, HINSTANCE hInstance,
					int nWidth, int nHeight, bool bIsWindowed);

	bool Main();
	void Terminate();

	BitmapFont* GetFont() const {return Font;}

	void PushState(IGameState* pState);
	void PopState();

	vector<IGameState*> StateVec;

	int GetScreenHeight() {return screenHeight;}
	int GetScreenWidth() {return screenWidth;}



	int GetGeneralImgID()	{ return generalImgID;}
	int GetBerserkerImgID()	{ return berserkerImgID;}
	int GetKnightImgID()	{ return knightImgID;}
	int GetPriestImgID()	{ return priestImgID;}
	int GetRangerImgID()	{ return rangerImgID;}
	int GetGrassImgID() { return GrassImgID;}

private:

	//PUT ALL NEW ID'S HERE
	int generalImgID, berserkerImgID, knightImgID, priestImgID, rangerImgID;
	int GrassImgID,RoadImgID,MoutainsImgID,SwampImgID,BunkerImgID,ForestImgID;












	static Game* Instance;

	Game();
	~Game();
	Game(const Game&);
	Game& operator= (const Game&);

	bool Input();
	void Update();
	void Render();

	CSGD_Direct3D*			D3D;
	CSGD_DirectInput*		DI;
	CSGD_TextureManager*	TM;
	CSGD_XAudio2*			XA;

	BitmapFont*			Font;

	int						screenWidth;
	int						screenHeight;
	bool					isWindowed;

	DWORD					currTime;
};